package demo3;

import java.io.File;
import java.io.IOException;
import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 石方旭
 * Date: 2022-08-09
 * Time: 10:29
 */
public class TestDemo1 {

    /**
     * 扫描指定目录，并找到名称中包含指定字符的所有普通文件（不包含目录），并且后续询问用户是否要
     * 删除该文件
     * @param args
     */

    public static void main(String[] args) {
        System.out.println("请输入你要扫描的指定目录路径");
        Scanner scan1 = new Scanner(System.in);
        String s1 = scan1.next();
        File rootPath = new File(s1);//创建路径实例
        if(!rootPath.isDirectory()){
            System.out.println("输入的并不是目录");
            return;
        }
        System.out.println("请输入你要删除的文件");
        Scanner scan2 = new Scanner(System.in);
        String toDelete = scan2.next();

        //开始扫描整个目录--找到与toDelete字符包含的文件
        scanDir(rootPath,toDelete);

    }

    public static void scanDir(File rootPath,String toDelete){
        //将文件目录的文件全部放到file数组里面
        File[] files = rootPath.listFiles();
        if(files==null||files.length==0) {
            return ; //如果目录里面无文件,就不要扫描--退出
        }
        //开始扫描整个目录里的文件
        for(File f : files){
            if(f.isDirectory()){
                //如果扫描的这个还是目录,那就继续深度优先便利--继续扫描此目录--直到找到文件为止
                scanDir(f,toDelete);
            }else {
                //证明不是目录--是一个普通的文件---那我们看是否包含toDelete里的字符
                //进而来判断是否要删除
                tryDelete(f,toDelete);
            }
        }
    }

    public static void tryDelete(File f,String toDelete){
        if(f.getName().contains(toDelete)){
            try {
                System.out.println("你是否要删除此路径下的文件Y/N ==>" + f.getCanonicalPath());
                Scanner scanner = new Scanner(System.in);
                String str = scanner.next();
                if(str.toLowerCase().equals("y")){
                    f.delete();
                    System.out.println("删除成功!!!");
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
